public class Test {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7};
        int k = 3;
        rotate(nums,k);
    }
        public static void rotate(int[] nums, int k) {
            int n = nums.length;
            //判断k和n的大小
            // 例如，n=5，k=7，实际上只需要轮转7%5=2个位置.因为轮转 5 个位置相当于数组元素回到了原来的位置。
            k = k % n;
            //给新数组长度赋值和原来数组一样长
            int[] newArray = new int[n];
            for (int i = 0; i < n; i++) {
                newArray[(i + k) % n] = nums[i];
            }
            //当 i = 0 时，newArray[(0 + 2) % 5] = newArray[2] = nums[0] = 1。
            //当 i = 1 时，newArray[(1 + 2) % 5] = newArray[3] = nums[1] = 2。
            //当 i = 2 时，newArray[(2 + 2) % 5] = newArray[4] = nums[2] = 3。
            //当 i = 3 时，newArray[(3 + 2) % 5] = newArray[0] = nums[3] = 4。
            //当 i = 4 时，newArray[(4 + 2) % 5] = newArray[1] = nums[4] = 5。

            //把新数组的值拷贝给原数组
            System.arraycopy(newArray, 0, nums, 0, n);
            for (int i = 0; i < newArray.length; i++) {
                System.out.println(newArray[i]);
            }
        }

}